package cn.good.yan.t6.t2;

import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

/**
 * 6 数据校验：Validation  - 验证 自定义效验
 *    2. ：编写校验类 - 效验规则
 * @author shengren.yan
 * @create 2023-09-14
 */
public class CannotBlankValidator implements ConstraintValidator<CannotBlank, String> {

    // initialize() 方法用于初始化校验器，在校验之前进行一些初始化操作。可以获取注解中的属性值，并进行相应的处理
    @Override
    public void initialize(CannotBlank constraintAnnotation) {
    }

    // isValid() 方法是校验的核心逻辑，用于判断被校验的值是否符合自定义的校验规则
    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        //null时不进行校验
        if (value != null && value.contains(" ")) {
            //获取默认提示信息
            String defaultConstraintMessageTemplate = context.getDefaultConstraintMessageTemplate();
            System.out.println("default message :" + defaultConstraintMessageTemplate);
            //禁用默认提示信息
            context.disableDefaultConstraintViolation();
            //设置提示语
            context.buildConstraintViolationWithTemplate("can not contains blank").addConstraintViolation();
            return false;
        }
        return true;
    }

}
